Embodiments are in the field of computer systems, and more particularly in the field of operating system interface and control in multiprocessor systems.
The increased development of parallel processing in modern computer systems has led to the development of partitioned microprocessor architectures, such as multicore or multiprocessor systems. This, in turn, has necessitated the development of system software and applications that can exploit present multi-core microprocessor architectures. One such development has been the MIMD (Multiple Instruction stream, Multiple Data stream) model, which refers to a parallel execution model in which the processors in a multiprocessor system essentially act independently of one another. In such systems, programs or processing structures may be decomposed for parallel execution on a functional basis. For example, certain systems may employ separate sequencers or processors for operating systems and applications. Such systems may employ operating system managed sequencers (OMS) to process operating system (OS) code, and application managed sequencers (AMS) to process application code. In general OMSs can execute both OS and application code, but AMSs can only execute application code. The division of processing tasks between OS and application code allows processing to be optimized for both types of tasks. In such a system, however, accommodation must be made to ensure that the OMS and AMS sequencers detect when either one performs an act that implicates the operating system, such as a system call (e.g., opening a file, etc.), or a fault or exception.
One disadvantage associated with systems that separate application and operating system processing between dedicated AMS and OMS sequencers is that since the operating system is not aware of the AMS, it cannot always provide protection to certain objects or elements used by the system.